Current data replication methods replicate data from a read-write primary data storage server to read-only secondary data storage servers. Data storage servers are referred to herein as simply servers. The primary server and the secondary servers can be located in different geographical regions. One of the characteristics of such a replication technique can include a slow write operation if a client computer (“client”) that is writing data to the primary server is located in a geographical region different from that of the primary server. Moreover, if the write operation is a synchronous write operation, the client can experience an additional delay, which is incurred in writing the data to the secondary servers. Typically, the client is unaware of why the write operations are slow, which can lead the clients to conclude that the application writing the data is faulty or slow. Increasing the number of secondary servers can increase data availability and/or reliability as a number of replicas of the data increases. However, increasing the number of servers can further increase the delay. Accordingly, the above data replication method is not scalable.
As can be the case with synchronous replication, the client resources can be held up until the client receives an acknowledgement indicating the successful write, thereby increasing a latency of the write operation (“client-perceived write latency”). In some embodiments, the client-perceived write latency is defined as amount of time taken to complete a write operation, which can include the time elapsed between a primary server receiving a write request from a client and the client receiving an acknowledgement that the data is stored at the distributed computing system with a specified reliability. Some replication methods attempt to decrease the client-perceived write latency by acknowledging the client even before the data is stored at the storage systems. However, such a replication method can cause data inconsistency. For example, if a client issues a read request immediately after it asked the primary server to store the data, if that data has not been stored at the storage system yet, the data may not exist in the storage system yet, or if it exists, can be stale. Accordingly, the current replication methods do not provide data consistency.